/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.edu.itschapala.sistemas.septimo.control;
import mx.edu.itschapala.sistemas.septimo.modelo.*;
import java.util.*;
import mx.edu.itschapala.sistemas.septimo.vista.enumeracion.TipoBusqueda;
import static mx.edu.itschapala.sistemas.septimo.vista.enumeracion.TipoBusqueda.CONTIENE;
import static mx.edu.itschapala.sistemas.septimo.vista.enumeracion.TipoBusqueda.INICIAR;

/**
 *
 * @author alex
 */


public class ProductoLnArreglo implements ProductoLnLocal{
	
private Producto listaProductos[] = new Producto[100];
private int indice =0;
private List<Producto> lista = new ArrayList<Producto>();

public void registrar (Producto producto){
	if (indice > 99){
		listaProductos [indice]=producto;
		indice++;
	}else{

	System.out.println("no hay espacio en memoria");	
	}

}

   public void modificar (Producto producto){
	
int pos =-1;
	for (int x=0;x<indice;x++){
		if (listaProductos [x].getCodigo()==producto.getCodigo()){
			pos=x;
		}
	}
	if (pos!=-1){
		 listaProductos[pos]= producto;
	}
		
		
	
		
	}

//}

public void eliminar (Producto producto){
	
	int pos =-1;
	for(int x=0; x <indice; x++){
		if(listaProductos[x].getCodigo()==producto.getCodigo()){
			pos=x;
			

		}
	}
     if (pos !=-1){
     	while(pos<indice){
     		listaProductos[pos]=listaProductos[pos+1];
     		pos++;
     	}
     	indice--;
     }

	
}



public Producto buscarPorCodigo (int codigo){
	int pos =-1;
	for (int x=0;x<indice;x++){
		System.out.println(listaProductos[x].getCodigo());
		if (listaProductos [x].getCodigo()==codigo){
			pos=x;
		}
	}
	if (pos!=-1){
		return listaProductos[pos];
	}else{
		
		return null;
	}

	}
	public List<Producto> getTodos(){
		List<Producto> lista = new ArrayList<Producto> ();
		for(int x=0;x<indice;x++){
			lista.add(listaProductos[x]);
		}

		return lista;
	}

    
    public List<Producto> getPorNombre(String Nombre, TipoBusqueda Criterio) {
        
        List<Producto> tmp = new ArrayList<Producto>();
        switch (Criterio) {
            case INICIAR:
                for (Producto p : lista) {
                    if (p.getNombre().startsWith(Nombre)) {
                        tmp.add(p);
                    }
                }
                break;
            case CONTIENE:
                for (Producto p : lista) {
                    if (p.getNombre().startsWith(Nombre)) {
                        tmp.add(p);
                    }
                }
                break;

        }
        return tmp;
    }

  
}
